#ifndef INC_CLIENT_NODECOLLECTOR_H
#define INC_CLIENT_NODECOLLECTOR_H

#include <vector>
#include <string>
using namespace std;

#include <Poco/Net/MulticastSocket.h>
#include <Poco/Net/DatagramSocket.h>
#include <Poco/Net/SocketAddress.h>
using Poco::Net::MulticastSocket;
using Poco::Net::DatagramSocket;
using Poco::Net::SocketAddress;

#include <Poco/Runnable.h>
#include <Poco/Semaphore.h>
using Poco::Runnable;
using Poco::Semaphore;

class NodeCollector : public Poco::Runnable
{
	SocketAddress _group;
	string _ringname;
	SocketAddress _nodeAddr;
	MulticastSocket _mcast;
	DatagramSocket _recv;
	vector<SocketAddress> _nodes;
	Semaphore* _lock;
	bool _isset;
	bool _stopping;

	public:
		NodeCollector(SocketAddress group, string ringname);
		virtual ~NodeCollector();

		SocketAddress node();

		void run();
};

#endif /* INC_CLIENT_NODECOLLECTOR_H */
